/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MemoriaIntermedia.TAREA;

import MemoriaIntermedia.GestorMemoriaIntermedia;
import MemoriaIntermedia.GestorMemoriaIntermediaBC;
import MemoriaIntermedia.Pagina;

/**
 *
 * @author User
 */
public class Tarea {
   
    /*  1. Modificar las implementaciones de la práctica, para poder conocer si una página fue modificada en la memoria intermedia y por lo tanto es necesario escribir en disco duro.
     * 
     * */
    
    public static void main(String[] args) {
        // Crear un gestor de memoria
        GestorMemoriaIntermedia gestorBuffer = new GestorMemoriaIntermedia(6);
        // Paginas del Disco
        System.out.println("TAREA 1 :CONTROLAR SI UNA PAGINA FUE MODIFICADA ");
        System.out.println("Paginas del Disco: ");
        Pagina[] paginas = new Pagina[10];
        for (int i = 0; i < paginas.length; i++) {
            Pagina pagina = new Pagina(i, "dato" + i);
            paginas[i] = pagina;
            System.out.println(pagina);
        }

        System.out.println("Contenido del Gestor: ");
        System.out.println(gestorBuffer);


        //
         System.out.println("COLOCANDO PAGINAS AL BUFFER Y MODIFICANDO A LA VEZ ");
        for (int i = 0; i < paginas.length; i++) {
            //moficando las paginas a proposito
            
            gestorBuffer.ponerPaginaEnBuffer(paginas[i]);
            gestorBuffer.ModificarPagina(i,"NuevoDato" + i);
            
            
        }
        //modificar paginas que se encuentran en el buffer
        
        
        
        System.out.println("Contenido del Gestor despues de poner bloques - SE REEMPLAZARON  LAS CUATRO PRIMERAS PAGINAS (FUERON MODIFICADAS): ");
        System.out.println(gestorBuffer);

        System.out.println("PONER OTRA PAGINA AL BUFFER ");
        Pagina paginaN = new Pagina(10,"p10");
        Pagina paginaE = gestorBuffer.ponerPaginaEnBuffer(paginaN);
        System.out.println(paginaE);
        System.out.println(gestorBuffer);
         
    /*
     * 
     * 
        2. Modificar la implementación de la práctica para soportar bloques clavados.
     */

     System.out.println("TAREA 2:Modificar la implementación de la práctica para soportar bloques clavados ");
     
     //hacer la prueba
     
     System.out.println("Paginas del Disco: Hacemos la pagina 1 y 3 clavadas");
        Pagina[] paginas2 = new Pagina[10];
        for (int i = 0; i < paginas2.length; i++) {
            Pagina pagina = new Pagina(i, "contenido" + i);
            
            if (i == 1 || i==3) {
               pagina.setClavado(true); 
            }
            paginas2[i] = pagina;
            System.out.println(pagina);
        }

        System.out.println("Contenido del Gestor: ");
        GestorMemoriaIntermediaBC gbc = new GestorMemoriaIntermediaBC(5);
        System.out.println(gbc);
     
        System.out.println("Colocando paginas al Buffer (10 paginas, 5 se  reemplazaran menos la 1 y 3 que son clavadas) ");
         for (int i = 0; i < paginas2.length; i++) {
            //moficando las paginas a proposito
            
            gbc.ponerPaginaEnBuffer(paginas2[i]);
        
         
            
        }
         System.out.println("");
         System.out.println("Contenido actual de buffer: ");
         System.out.println(gbc);
     
/*
        3. Modificar las implementaciones de la práctica para resolver la operación: inner join  prestatario,cliente */
         
         
       
        
    
    }

}
